#pragma once

#include <memory>

#ifdef YSIMPLESYSTEM_EXPORTS
#define YSIMPLESYSTEM_EXPORTS_API __declspec(dllexport) 
#else
#define YSIMPLESYSTEM_EXPORTS_API __declspec(dllimport) 
#endif

namespace ysimple_system
{
	struct ISystemFactory;
	struct IProactor;
	struct IThread;
	struct IStream;

	typedef std::shared_ptr<IProactor> PROACTOR_SPTR;
	typedef std::shared_ptr<IThread>	THREAD_SPTR;
	typedef std::shared_ptr<IStream>	STREAM_SPTR;
	

	YSIMPLESYSTEM_EXPORTS_API bool init();
	YSIMPLESYSTEM_EXPORTS_API ISystemFactory& getFactory();
	YSIMPLESYSTEM_EXPORTS_API void OutputDebugString(char* format, ...);
}